package com.bwssystems.HABridge.plugins.hass;
import java.lang.reflect.Type;
import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
import com.google.gson.JsonDeserializationContext;
import com.google.gson.JsonDeserializer;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
public class ServiceDeserializer implements JsonDeserializer<Service> {
private Map<String, ServiceElement> services;
private String domain;
@Override
public Service deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext ctx)
{
JsonObject objServices = json.getAsJsonObject();
String theKey;
domain = objServices.get("domain").getAsString();
JsonObject obj = objServices.get("services").getAsJsonObject();
services = new HashMap<String, ServiceElement>();
for(Entry<String, JsonElement> entry:obj.entrySet()){
ServiceElement theServiceElement = new ServiceElement();
theKey = entry.getKey();
JsonObject theRawDetail = obj.getAsJsonObject(theKey);
theServiceElement.setDescription(theRawDetail.get("description").getAsString());
theServiceElement.setField(ctx.deserialize(theRawDetail.get("fields"), Field.class));
services.put(theKey, theServiceElement);
}
return new Service(domain, services);
}
}